# coding=utf-8
import imp
import os

from migrate.versioning import api
from FlaskWeb import db
from config import SQLALCHEMY_DATABASE_URI
from config import SQLALCHEMY_MIGRATE_REPO

# 数据库迁移


# 在字符前加上r 防止转义 windows是\ linnuxshi  /
# migration= SQLALCHEMY_MIGRATE_REPO + r"\version\%03d_migration.py" % (api.db_version(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO) + 1)
migration= SQLALCHEMY_MIGRATE_REPO + os.path.sep+"versions"+os.path.sep+"%03d_migration.py" % (api.db_version(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO) + 1)
tmp_module=imp.new_module('old_model')
old_model=api.create_model(SQLALCHEMY_DATABASE_URI,SQLALCHEMY_MIGRATE_REPO)
exec old_model in tmp_module.__dict__
script=api.make_update_script_for_model(SQLALCHEMY_DATABASE_URI,SQLALCHEMY_MIGRATE_REPO,tmp_module.meta,db.metadata)
open(migration,"wt").write(script)
api.upgrade(SQLALCHEMY_DATABASE_URI,SQLALCHEMY_MIGRATE_REPO)
print '新的数据迁移保存在：'+migration
print '当前数据库的版本：'+str(api.db_version(SQLALCHEMY_DATABASE_URI,SQLALCHEMY_MIGRATE_REPO))